文件和目录常用命令

(一) 知识点目录

  1. ls 查看目录内容

    • - a 所有内容
    • -l 列表显示
    • -h -l 列表显示(人性化)
  2. cd 切换目录

  3. 创建和删除

    • touch
    • rm
    • mkdir
  4. 拷贝和移动

    • cp
    • mv
  5. 查看文件内容

    • cat
    • more
    • grep
  6. 其它命令

    • echo
    • 重定向 >和>>
    • 管道符 |

(二) ls命令

(1) 作用

查看目录内容

(2) 选项和参数

  • -a 显示指定目录下所有子目录和文件, 包括隐藏文件
  • -l 以列表的方式显示文件的详细信息
  • -h 配合-l以人性化的方式显示文件大小

(3) 举例

ls #列出当前目录所有文件和文件夹
ls aa #列出aa文件夹的内容
ls -l   #列表形式显示
ls -l -h #列表形式显示,文件大小显示方式不一样
# 选项可以合并写
ls -lha

(4) 文件大小的单位

image-20230131213842871

(5) 通配符的使用

  • *:匹配任意多个字符。
  • ?:匹配任意一个字符。
  • [abc]:匹配中括号内出现的任意一个字符。
  • [1-9] : 匹配1-9中任意一个

举例:

ls *.html  #列出当前目录的所有html文件
touch 111 131 121 122 
ls 1?1 #只列出1开头, 中间是任意一个字符串, 然后1结尾的文件
ls *mo* #列出中间包含有mo的文件
ls *[ad]* #列出含有a或者d的文件

(6) 类似的命令tree

  • linux系统默认没有tree, 需要安装

  • 使用tree命令可以以树状图列出文件目录结构

  • 添加-d参数则只显示目录

(1) 安装

  1. 下载tree软件

    wget ftp://mama.indstate.edu/linux/tree/tree-1.8.0.tgz
    
  2. 解压tree压缩包

    tar zxvf tree-1.8.0.tgz
    
  3. 进入解压后端文件夹

    cd  tree-1.8.0
    
  4. 安装tree软件

    make
    
  5. 拷贝tree到bin目录

    cp tree /bin
    
  6. 在任意目录使用tree

    cd
    tree
    tree aaa
    

(三) 切换目录命令cd

cd 命令,是 Change Directory 的缩写,用来切换目录。

pwd命令, 显示当前目录所在路径

特殊符号作 用
~代表当前登录用户的主(家)目录
* root用户的家目录 /root
* zhangsan用户的家目录 /home/zhangsan
~用户名表示切换至指定用户的主目录
-代表上次所在目录
.代表当前目录
..代表上级目录

举例:

pwd #查看当前目录
cd /www/wwwroot #切换到wwwroot目录
cd ~ #回家,~可以省略
cd ~zhangsan #切换到zhangsan用户的家目录
cd -

(四) 相对路径和绝对路径

  1. 相对路径: 在输入路径时, 最前面不是/或者~, 表示相对当前目录所在的目录位置
  2. 绝对路径: 在输入路径时, 最前面是/~, 表示从根目录/家目录开始的具体目录位置

举例:

cd /www/wwwroot #绝对路径,是以/开头
cd ./h5 #相对路径,不是/或~开头
cd ~/aaa #绝对路径,是以~开头

(五) 创建文件命令touch

  • 使用touch命令可以在当前目录创建文件

    touch 文件名
    
  • 如果文件不存在, 则创建一个空白文件, 如果文件存在, 更新文件创建时间(不会改变文件内容)

    touch demo.txt #创建一个空白的txt文件
    vim demo.txt #修改内容
    ls -lh #以人性化列表的方式查看目录内容
    touch demo.txt #重新创建文件,但并不会覆盖原先的文件,只是更新了时间
    ls -lh 
    

(六) 创建文件夹命令mkdir

例1. 创建文件夹aa

mkdir aa 
touch bb
mkdir bb #报错不能有相同的名字

例2. 递归创建文件夹

需要添加参数 -p

mkdir -p xx/yy/zz/11.txt #复制xshell的文字用ctrl+ins,粘贴用shift+ins
tree xx #树状显示内容

(七) 删除文件命令rm

命令解释

  1. 用来删除文件, 需要小心, 使用rm删除的文件不经过回收站, 无法恢复
  2. 删除不存在的文件会报错, 添加-f(强制删除)就不会报错
  3. 删除文件夹需要使用-r, 意思是递归删除目录下的内容

例1. 删除文件

touche 111.txt
rm 111.txt #删除文件不经过回收站
rm 111.txt #cannot remove ‘aaa.txt’: No such file or directory
rm -f 111.txt #强制删除,文件不存在也不会提示错误

例2. 删除文件夹

mkdir -p a/b/c #递归创建文件夹
rm a #cannot remove ‘a’: Is a directory(是一个目录)
rm -r a #递归删除,需要一层层确认
mkdir a/b/c/d/e/f
rm -rf a #递归强制删除,无需确认

(八) 拷贝和移动命令

(1) tree命令

  1. 作用: 以树状的方式显示目录结构
  2. 命令: tree 目录名
  3. 参数: -d只显示目录

举例:

tree aaa

(2) 拷贝命令cp

命令介绍

  • 作用: 拷贝文件或文件夹, cp ==copy==的简写

  • 命令: cp 文件 路径

  • 参数:

    • -i 覆盖文件提示

    • -r 递归拷贝文件夹

例1. 拷贝文件

cd /www/wwwroot #切换到wwwroot目录
touch demo.txt #创建demo.txt文件
cp demo.txt /home/zhangsan #把demo.txt拷贝到张三的家目录
#或者
cp demo.txt ~zhangsan

例2. 文件被覆盖提示

cd /www/wwwroot
cp demo.txt ~zhangsan #目标路径已经存在demo.txt,系统就会提示"overwrite...",输入y覆盖文件,输入跳过

例3. 拷贝文件夹

cd /www/wwwroot
cp h5 ~zhangsan #无法拷贝,因为h5是目录
cp -r h5 ~zhangsan #递归拷贝文件夹,-r是必须的
cp -r ./h5 ./xyz #拷贝h5目录到当前目录,同时重名为xyz

(3) 移动命令mv

命令介绍

  • 作用: ==mv== ==move==的简写, 用来移动或者重命名文件(夹), 也可以重命名文件(夹)
  • 命令: mv 文件名 路径/文件名
  • 参数: -i覆盖提示

例1. 移动文件

cd /www/wwwroot 
mv demo.txt /home/lisi #将文件demo.txt移动到李四家目录 

例2. 重名文件

cd ~lisi #切换到李四家目录
mv demo.txt aaa.txt #重命名文件
mv demo.txt /root/bbb.txt #移动文件的同时重命名

(九) 查看文件内容命令

准备工作

cd /www/wwwroot
touch demo.txt 
vim demo.txt #随意复制若干内容到文件里, 保存退出

(1) cat命令

  • 作用: 可以进行创建文件、文件合并、追加文件内容等操作
  • 参数: -b标识行号, -n

举例:

cat aa.txt
cat -n aa.txt #显示所有行号
cat -b aa.txt #显示所有非空行号

(2) more命令

  • 作用: 分屏显示文件的内容

    文件内容较短的时候,就一次性的显示完文件的所有的内容,当文件的内容较多时,就分屏显示文件的所有内容。

  • 命令: more 文件名

  • 选项: -num 一次显示的行数

举例:

more aa.txt
more -5 aa.txt
# 分屏显示后, 按`enter`显示下一屏(下5条)
# 按空格, 显示下一屏(窗口)
# 按q退出

(3) grep命令

  • 作用: grep命令是linux一种强大的文本搜索工具
  • 命令: grep 匹配字符串 文件名
  • 选项:
    • -n 显示匹配文本行及行号
    • -v 显示不匹配的其它文本行
    • -i 忽略大小写
    • ^a 搜索以a开头的行(行首)
    • ke$ 搜索以ke结尾的行(行尾)

举例

grep 333 demo.txt #从demo.txt找出含有333的行
grep -n 333 demo.txt #-n 显示行号
grep -i web demo.txt #-i 忽略大小写
grep ^1 demo.txt #在demo.txt里查找1开头的行
grep yy$ demo.txt #在demo.txt里查找yy结尾的行

(十) echo重定向> >>和管道命令|

(1) echo 命令

用来输出命令到终端

(2) 重定向

使用echo结合>或>>将输出内容重定向到某个文件

  • echo hello > aa.txt 把字符串hello输入到aa.txt文件
  • echo heihei >> aa.txt 把字符串heihei追加到aa.txt文件
echo hello wordl > aa.txt #把字符"hello world"输入到aa.txt文件
echo 12345 > aa.txt #会覆盖aa.txt里的内容
echo 7891jqk >> aa.txt #用>>可以把字符串追加到文件内容的后面

(3) 管道命令|

命令介绍:

  • linux允许将一个命令的==结果==作为另一个命令的==输入==, 可以理解成流水线作业, 上一道工序做完了传到下一道工序
  • 常见的管道配合命令:
    • more 分屏显示
    • grep 在结果里查询指定文本

例1. ls+more

ls -lha | more

例2. ls+grep

ls demos | grep dd #从列表里过滤出包含dd的文件或文件夹

(十一) 查找文件

(1) find命令

  • 命令格式: find path -name 文件名
  • path是指定查找目录

举例:

find / -name index.html #查找系统所有index.html
find /www/wwwroot -name index.html #查找wwwrootx下的所有index.html
find / -name dex.html #什么也找不到, 因为没有一个文件教dex.html
find / -name *dex.html #模糊查找, 找出包含dex.html的文件

(2) locate命令

linux系统每天至少自动扫描一次文件,将结果保存到数据库,locate查的是数据库记录。locate查询比find要快,但最新文件如果在数据库中没有记录,是需要手动更新(updatedb)

命令格式: locate 文件名

locate index.html #找出所有包含index.html
locate dex.html #找出所有包含dex.html

(3) which命令

which从环境变量文件(/etc/profile)中的path目录中查找,且which找的都是可执行文件。

which nginx

(4) whereis命令

与which类似查询可执行文件,whereis查询更多,会查找出相关的man文件

whereis nginx